home *** CD-ROM | disk | FTP | other *** search
- /* receiver.c - Receiver task for synchronous communication */
-
- #define SYNC 0
-
- static handler Sync(msg_t *msg_ptr) {
- register task_t caller = msg_ptr->srcTid;
- register task_t self = msg_ptr->dstTid;
-
- /* interrupt caller.Reply */
- msg_ptr->srcTid = self;
- msg_ptr->dstTid = caller;
- msg_ptr->dstHid = 0; /* caller's REPLY handler id = 0 */
- msg_ptr->type = msg_type_SYNC;
- task_interrupt(&msg);
- }
-
- task Receiver(void) {
- task_setHandler(1, Sync); /* this task has one handler called Sync */
-
- loop {
- /* wait on Sync */
- task_enableWait(1, SYNC);
- }
- }
-